package br.com.cicero.notasfiscais.dao;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.com.cicero.notasfiscais.infra.JPAUtil;
import br.com.cicero.notasfiscais.modelo.Produto;
import br.com.cicero.notasfiscais.modelo.Usuario;

public class UsuarioDAO implements Serializable {
	
	@Inject
	private EntityManager em;
	
	public boolean existe(Usuario usuario) {
				
		this.em.getTransaction().begin();
		
		Query query = this.em.createQuery("from Usuario u where u.login = "
				+ ":pLogin and u.senha = :pSenha");
				query.setParameter("pLogin", usuario.getLogin());
				query.setParameter("pSenha", usuario.getSenha());
		
		boolean encontrado = !query.getResultList().isEmpty();
		
		this.em.getTransaction().commit();
				
		return encontrado;
				
	}
	
	public void adiciona(Usuario usuario) {
				
		this.em.getTransaction().begin();
		
		this.em.persist(usuario);
		
		this.em.getTransaction().commit();
		
		
	}
	
	public List<Usuario> listaTodos() {
				
		this.em.getTransaction().begin();
		
		Query query = this.em.createQuery("SELECT u FROM Usuario u");
		List<Usuario> usuarios = query.getResultList();
		
		return usuarios;
				
	}
	
	public void remove(Usuario usuario) {
				
		this.em.getTransaction().begin();
		
		Usuario obj = (Usuario) this.em.merge(usuario);
		this.em.remove(obj);
				
		this.em.getTransaction().commit();
		
		
	}

	public void altera(Usuario usuario) {
				
		this.em.getTransaction().begin();
		
		this.em.merge(usuario);
		
		this.em.getTransaction().commit();
				
		
	}

}
